/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package sys.dao;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import sys.bean.PedidoBean;
import sys.bean.ProdutoBean;
import sys.bean.ProdutoRomaneioBean;
import sys.bean.RomaneioBean;
import sys.utils.ConexaoMySql;
import sys.utils.Utils;

/**
 *
 * @author Administrador
 */
public class ProdutoRomaneioDao {

    public void atualizaSaldoCliente(List<ProdutoRomaneioBean> listaProdutos) throws SQLException {
        Connection con = ConexaoMySql.getConection();
        

        for (ProdutoRomaneioBean prBean : listaProdutos) {
            System.out.println("atualizando saldo");
            System.out.println(prBean.getQtdEntregue());
            System.out.println(prBean.getRomaneio().getPedido().getPedido());
            System.out.println(prBean.getProduto().getCodigo());

            String sql = "UPDATE  produto_pedido  SET  qtd_entregue =? WHERE   id_pedido =? AND  produto_codigo =?";
            PreparedStatement stmt = null;
            stmt = con.prepareStatement(sql);

            stmt.setDouble(1, prBean.getQtdEntregue());
            stmt.setString(2, prBean.getRomaneio().getPedido().getPedido());
            stmt.setString(3, prBean.getProduto().getCodigo());
            stmt.execute();
            stmt.close();
        }

        con.close();
    }

    public void atualizaItensEntregues(List<ProdutoRomaneioBean> listaProdutos) throws SQLException {
        Connection con = ConexaoMySql.getConection();

        for (ProdutoRomaneioBean prBean : listaProdutos) {
            System.out.println("inserindo itens entregues");
            System.out.println(prBean.getQtdEntregue());
            System.out.println(prBean.getProduto().getCodigo());
            System.out.println(prBean.getRomaneio().getIdRomaneio());

            String sql = "UPDATE  produto_romaneio  SET  qtd_entregue =? WHERE   produto_codigo =? AND  id_romaneio =?";

            PreparedStatement stmt = con.prepareStatement(sql);

            stmt.setDouble(1, prBean.getQtdEntregue());
            stmt.setString(2, prBean.getProduto().getCodigo());
            stmt.setInt(3, prBean.getRomaneio().getIdRomaneio());

            stmt.execute();
            stmt.close();
        }

        con.close();
    }

    /*
     deletando produtos do romaneio
     */
    public void delete(int idRomaneio) throws SQLException {
        Connection con = ConexaoMySql.getConection();

        String sql = "DELETE FROM produto_romaneio WHERE  id_romaneio = ?";
        PreparedStatement stmt = con.prepareStatement(sql);

        stmt.setInt(1, idRomaneio);
        stmt.execute();

        stmt.close();
        con.close();
    }

    /*
     inserindo do romaneio
     */
    public void insertProdutosRomaneio(List<ProdutoRomaneioBean> produtosRomaneio) throws SQLException, IOException {
        Connection con = ConexaoMySql.getConection();
        PreparedStatement stmt = null;

        int idRomaneio = RomaneioDao.lastID();

        for (ProdutoRomaneioBean prodPedido : produtosRomaneio) {
            String sql = "INSERT INTO produto_romaneio \n"
                    + "(id_romaneio, produto_codigo, qtd_enviado, preco_custo, preco_venda) \n"
                    + "VALUES \n"
                    + "(?, ?, ?, ?, ?);";

            stmt = con.prepareStatement(sql);

            stmt.setInt(1, idRomaneio);
            stmt.setInt(2, Integer.parseInt(prodPedido.getProduto().getCodigo()));
            stmt.setDouble(3, prodPedido.getQtdEnviada());
            stmt.setDouble(4, prodPedido.getpCusto());
            stmt.setDouble(5, prodPedido.getpVenda());

            stmt.execute();
        }
        stmt.close();
        con.close();
    }

    public List<ProdutoRomaneioBean> produtosRomaneio(int idRomaneio) throws SQLException {
        List<ProdutoRomaneioBean> listaProdutosRomaneio = new ArrayList<>();
        Connection con = ConexaoMySql.getConection();

        String sql = "SELECT r.id_pedido, p.codigo, p.descricao, p.unidade, pr.qtd_enviado, pr.preco_custo, pr.preco_venda \n"
                + "FROM romaneio r \n"
                + "INNER JOIN produto_romaneio pr ON (pr.id_romaneio = r.id_romaneio) \n"
                + "INNER JOIN produto p ON (p.codigo = pr.produto_codigo) \n"
                + "WHERE r.id_romaneio =" + idRomaneio;

        PreparedStatement stmt = con.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();

        while (rs.next()) {

            ProdutoRomaneioBean produtoRomaneio = new ProdutoRomaneioBean();
            RomaneioBean romaneio = new RomaneioBean();
            PedidoBean pedido = new PedidoBean();
            ProdutoBean produto = new ProdutoBean();

            pedido.setPedido(rs.getString("id_pedido"));
            romaneio.setPedido(pedido);
            produtoRomaneio.setRomaneio(romaneio);

            produto.setCodigo(Utils.codCorreto(rs.getString("codigo"), 5));
            produto.setDescricao(rs.getString("descricao"));
            produto.setUn(rs.getString("unidade"));
            produtoRomaneio.setProduto(produto);

            produtoRomaneio.setQtdEnviada(rs.getDouble("qtd_enviado"));
            produtoRomaneio.setpCusto(rs.getDouble("preco_custo"));
            produtoRomaneio.setpVenda(rs.getDouble("preco_venda"));

            listaProdutosRomaneio.add(produtoRomaneio);

        }

        stmt.close();
        con.close();

        return listaProdutosRomaneio;
    }

}
